\section{Laravel基本MVC流程}
MVC的基本流程可参见图\ref{fig:mvc}，在Laravel中的基本流程是先指定路由，再在相应的中控制器借助模型获取数据，最后将数据显示到视图中。

\subsection{设定路由}
在routes.php中指定某个功能的路由内容，例如，我们设置如下路由信息：

\begin{lstlisting}
Route::get('article', 'ArticlesController@index');
\end{lstlisting}

\subsection{创建控制器}
先利用artisan 辅助生成控制器代码：

\begin{lstlisting}
php artisan make:controller ArticlesController
\end{lstlisting}

在ArticlesController类中，创建对应的方法index()：

\begin{lstlisting}
public function index()
{
    # code...
}
\end{lstlisting}

\subsection{将数据传递到视图}

\begin{lstlisting}
public function index()
{
    $articles = Article::all();
    return view('articles.index', compact('articles'));
}
\end{lstlisting}

\subsection{创建视图}
通常情况下，我们都会使用Blade模版继承主页面，并将合适的内容填充进去：

\begin{lstlisting}
@extends('master')

@section('title', '文章一览')

@section('sidebar')
    @parent
    <h1>文章一览</h1>
@endsection

@section('content')
    @foreach($articles as $article)
    <a href="{{url('article', $article->id)}}">{{$article->title}}</a>
    <article>{{$article->body}}</article>
    @endforeach
@endsection
\end{lstlisting}

在上述代码中，使用url()函数生成了URI片段（article/1），这些片段，又会成为routes.php中设置路由的依据，如：

\subsection{添加新路由}

\begin{lstlisting}
Route::get('article/{id}', 'ArticlesController@show');
\end{lstlisting}

\subsection{设置控制器方法}

\begin{lstlisting}
public function show($id)
{
    $article = Article::find($id);
    return $article;
}
\end{lstlisting}

实际工作中的开发流程也基本如此。
